Skip to content

Accessibility Enhancements H1 2026#492

Open
PiJoCoder wants to merge 57 commits intomasterfrom
hacitandogan_20251118_AccessibilityEnhancements_NewRound
Open

Accessibility Enhancements H1 2026#492
PiJoCoder wants to merge 57 commits intomasterfrom
hacitandogan_20251118_AccessibilityEnhancements_NewRound

Conversation

@PiJoCoder
Copy link
Copy Markdown
Collaborator

@PiJoCoder PiJoCoder commented Apr 8, 2026

Report Status
Active Queries_C.rdl Complete
Active Traces and XEvents_C.rdl Complete
ActiveProcesses_C.rdl Complete
AlwaysOn_AGBasics_C.rdl
AlwaysOn_AGDetails_C.rdl
AnalysisSummary_C.rdl
Blocking and Wait Statistics_C.rdl
Blocking Chain Detail_C.rdl
Blocking Runtime Detail_C.rdl
Bottleneck Analysis_C.rdl
DatabaseConfiguration_C.rdl
Errors and Warnings_C.rdl
Filter_Drivers_C.rdl
Instructions.rdl
Linux_Perfmon_C.rdl
Linux_Perfmon_CPU_C.rdl
Linux_Perfmon_IO_C.rdl
Linux_Perfmon_Memory_C.rdl
Linux_Perfmon_Network_C.rdl
Loaded Modules_C.rdl
LockSummary_C.rdl
Memory Brokers_C.rdl
Memory Clerks_C.rdl
Missing Indexes_C.rdl
Other Waits_C.rdl
PAL_C.rdl
PAL_sub_C.rdl
Perfmon_C - Backup.rdl
Perfmon_C.rdl
Perfmon_CPU_C.rdl
Perfmon_IO_C.rdl
Perfmon_Memory_C.rdl
Perfmon_Network_C.rdl
Query Execution Memory Details_C.rdl Complete
Query Execution Memory_C.rdl Complete
Query Hash_C.rdl Complete
Query_Store_C.rdl Complete
Query_Store_Details_C.rdl Complete
Replication_Topology_C.rdl Complete
Running_Device_Drivers_C.rdl Complete
ServerConfiguration_C.rdl Complete
Spinlock Details_C.rdl Complete
Spinlock Stats_C.rdl Complete
SQL 2000 Blocking Detail_C.rdl Complete
SQL 2000 Blocking_C.rdl Complete
SQL Perf Main.rdl Complete
SQLAssessmentAPI_C.rdl Complete
SysIndexes_C.rdl Complete
Sysprocesses_C.rdl Complete
System_Requests_C.rdl Complete
Tempdb_Space_Use_C.rdl Complete
TopN_Resources_By_QDS.rdl Complete
TopPlanAnalysis_C.rdl Complete
Virtual File Stats Details_C.rdl Complete
Virtual File Stats_C.rdl Complete
WaitDetails_C.rdl Complete
WASD_Connection_Stats_C.rdl Complete
WASD_Deadlocks_C.rdl Complete
WASD_Event_Log_C.rdl Complete
WASD_ResourceStats_C.rdl Complete
WASD_ResourceUsage_C.rdl Complete
Working Set Trim_C.rdl Complete

hacitandogan and others added 24 commits November 19, 2025 16:38
+this is what I carried over from older developments we did in another branch.
+open points to check further ;
     --complete tests
     --send this as a parameter to reports
     --check menu items for themes
+ To simply any future modifications , all theme definitions will be managed from single place and will load the combobox dynamically
+Initial Tests
…acitandogan_20251118_AccessibilityEnhancements_NewRound
worked on 4096,4041,4100
…d via various functionality when LogMessage() is used
…d' of https://github.com/microsoft/SqlNexus into hacitandogan_20251118_AccessibilityEnhancements_NewRound
…and that would cause a Null reference exception.
…struction report, but only if you hit Enter or Space bar
…ocus lands on "Instructions" control or when switching databases in the current DB control.
…k a database using a mouse click, the selection switches to a new database automatically (instead of requiring an Enter)
… original SQL Nexus colors

#475 modifications to default theme to match left hand menu colors to original SQL Nexus colors
…eedback.

#475 added missing accessibility name based on accessibility team's feedback after their tests.
#475 correcting the logic for leftMenu bool variable to set it  to true at right place
• fmLoginEx.cs: Theme dropdown now refreshes the report immediately via BeginInvoke; Cancel reverts report theme; removed redundant refresh from FormClosing
• fmNexus.cs: RefreshCurrentReportTheme and RefreshReport skip reports with unresolved parameters to prevent InvalidOperationException from async GetDocumentMap; new ReportViewer controls get ApplyTheme on creation so first-launch theming is correct
• SQL Perf Main.rdl: Replaced hardcoded text colors (Black, DimGray, Blue) and FmtHyperLinkTextColor/FmtAmbientBackground parameter references with theme-aware report variables (ReportTextColor, TitleColor, TableHeadingFontColor, TableHeadingColor)
…d' of https://github.com/microsoft/SqlNexus into hacitandogan_20251118_AccessibilityEnhancements_NewRound
…ll through reports wasn't updating contrast them: SetReportQueryParameters() returned early for reports without dataset-bound parameters, skipping the ContrastTheme injection entirely during drillthrough navigation
…y updating ContrastTheme and re-rendering in tsbBack_Click, and removing overly strict null-parameter guards that silently blocked report refreshes
…acitandogan_20251118_AccessibilityEnhancements_NewRound
…ats_C.rdl WASD_Deadlocks_C.rdl WaitDetails_C.rdl Reports
…ocking Detail_C.rdl SQL 2000 Blocking_C.rdl TopN_Resources_By_QDS_C.rdl reports
…r moves to different positions in the main application window)

Restore the original Controls.Add order for toolbars in fmNexus.Designer.cs. WinForms ToolStripPanel lays out controls
in reverse add order (last added = top row). The order was inadvertently changed on this branch, causing the main toolbar
(SQL connect, folder, help buttons) to shift position depending on window width. Before (broken): toolbarMain, toolbarService, menuBarMain, toolbarReport After (restored): menuBarMain, toolbarService, toolbarReport, toolbarMain
…nd WASD_Connection_Stats reports

Add ContrastTheme parameter, 11 theme variables, and wire all UI
elements to theme variables for Aquatic/Desert/None contrast theme
Add ContrastTheme parameter, 11 theme variables, and wire all UI
elements to theme variables for Aquatic/Desert/None contrast themes:
…dialog for Username and Psswrd

WinForms disabled labels ignore ForeColor and render with a system-derived dark gray via ControlPaint.DrawStringDisabled(), which is invisible on Aquatic's dark #202020 background.

Fix: Keep User Name and Password labels always Enabled=true and simulate the disabled appearance by setting a muted ForeColor:
- Aquatic: #808080 (medium gray, visible on dark background)
- Desert: #A0A0A0 (lighter gray, visible on warm background)
- Default: SystemColors.GrayText (standard system disabled color)

Also re-apply dimming in cmbTheme_SelectedIndexChanged after
ThemeManager.ApplyTheme resets all control ForeColors.
…G 2.4.3)

- Set TabStop = false on all 6 expand/collapse buttons (btnExpandTasks,
  btnCollapseTasks, btnExpandData, btnCollapseData, btnexpandReports,
  btncollapsReports) so keyboard focus lands only on the LinkLabel for
  each section header, eliminating duplicate focus targets
- Fix empty llData_LinkClicked_1 handler so the "Logs" LinkLabel
  correctly toggles panel visibility on Enter/Space, matching the
  button behavior
Create AccessibleTextBox subclass that enables the UIA Text pattern
by setting Multiline=true with single-line constraints (WordWrap=false,
AcceptsReturn=false, ScrollBars=None, Enter key blocked, pasted
newlines stripped). Standard WinForms single-line TextBox controls
only support the Value pattern, failing the Section 508 502.3.10
requirement that Edit controls must support the Text pattern.

Replace TextBox with AccessibleTextBox in:
- fmLoginEx: txtServerName, txtUserName (txtPassword kept as standard
  TextBox due to PasswordChar incompatibility with Multiline)
- fmConnect: txtSqlServer
- fmCustomRowset: txtRowsetName, txtIdentifier
- fmReportParameters: dynamically created string parameter TextBoxes

Add AccessibleName to controls that were missing it:
- fmConnect: txtSqlServer ("Server Name")
- fmCustomRowset: txtRowsetName ("Rowset Name"), txtIdentifier ("Identifier")
- fmReportParameters: dynamic controls set from parameter label text
- fmLoginEx: cmbTheme ("Contrast Theme") with AccessibleDescription
- Persist all toolbar visibility states (Standard, Report, Service)
  in fmNexus_FormClosing so show/hide preferences survive app restart
- Explicitly sync toolbarMain.Visible in ShowHideUIElements to fix
  Standard toolbar not appearing on startup
- Fix Report toolbar ignoring saved hidden state: SelectLoadReport
  was unconditionally setting toolbarReport.Visible from menu checked
  state, and the two-way DataBinding pushed true back to the setting,
  overwriting the user's saved preference. Now reads from persisted
  ShowReportToolbar setting as source of truth
- Fix CloseTab corrupting ShowReportToolbar setting when last tab
  closes: preserve user preference before DataBinding overwrites it
- Fix Standard toolbar shifting from its own row into the Report
  toolbar row on database change: save toolbar row index before
  refresh and restore via ToolStripPanel.Join() afterward
- Add GetToolStripRow() helper to find a ToolStrip's row index
…ontent using tabs

ToolStrip controls inside ToolStripContainer do not participate in normal Tab key navigation regardless of TabStop settings. Override
ProcessCmdKey to intercept F6 (and Shift+F6 for reverse) to cycle focus between panes, following the standard Windows convention used
in Visual Studio, Outlook, and Explorer.

F6 cycle order:
1. Report toolbar (page nav, zoom, find, Current DB, Theme)
2. Standard toolbar (Connect, Open, Run All, Help)
3. Service toolbar (if visible)
4. Content area (left nav + report viewer)

Satisfies WCAG 2.1.1 (Keyboard) and 2.4.3 (Focus Order) by ensuring
all toolbars are reachable via keyboard without requiring mouse click.
…ttons announced

- Rename Parameters dialog title from "Report Parameters" to
  "Parameters" to match the toolbar button text, ensuring screen
  readers announce a consistent name
- Create AccessibleRadioButton subclass that announces positional
  information (e.g., "1 of 3") via AccessibleDescription and
  RaiseAutomationNotification on checked state changes, working
  around .NET Framework 4.8 limitation where RadioButton does not
  expose UIA PositionInSet/SizeOfSet properties
- Convert all radio buttons in fmCustomRowset (rdAddRowset,
  rdEditRowset, rdDelete, rdEnable, rdDisable) to AccessibleRadioButton
- Fix rdDelete having incorrect TabStop=true when not initially checked
- Merge AccessibleTextBox and AccessibleRadioButton into single
  AccessibleControls.cs file for maintainability
…nouncement

Set AccessibleDescription ("1 of 8" through "8 of 8") on all export
format menu items (Excel, PDF, JPEG, Bitmap, EMF, GIF, PNG, TIFF)
in the Export dropdown so screen readers announce positional context
when navigating the menu.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants